import type { PageResult } from '#/api/common';

import { requestClient } from './request';

interface SysNoticeMessageVo {
  /**
   * 消息内容
   */
  content?: string;
  /**
   * 创建者
   */
  createBy?: number;
  /**
   * 创建人名称
   */
  createByName?: string;
  /**
   * 创建部门
   */
  createDept?: number;
  /**
   * 创建时间
   */
  createTime?: string;
  id?: number;
  /**
   * 读取状态 0 未读 1 已读
   */
  readStatus?: number;
  /**
   * 接收用户id
   */
  receiveUserId?: number;
  /**
   * 消息标题
   */
  title?: string;
  /**
   * 更新者
   */
  updateBy?: number;
  /**
   * 更新人名称
   */
  updateByName?: string;
  /**
   * 更新时间
   */
  updateTime?: string;

  [property: string]: any;
}

/**
 * 分页查询用户通知消息列表
 * @param params
 */
export function queryUserMessagePage(params?: any) {
  return requestClient.get<PageResult<SysNoticeMessageVo>>(
    '/system/notice/message/queryUserMessagePage',
    { params },
  );
}

/**
 * 查询用户通知消息列表
 * @param params
 */
export function queryUserMessageList(params?: any) {
  return requestClient.get<SysNoticeMessageVo[]>(
    '/system/notice/message/queryUserMessageList',
    { params },
  );
}

/**
 * 通知消息全部标记为已读
 * @param params
 */
export function markMessageAllRead(params?: any) {
  return requestClient.getWithMsg<void>('/system/notice/message/allRead', {
    params,
  });
}

/**
 * 查询未读消息数
 */
export function getMessageUnreadCount() {
  return requestClient.get<void>('/system/notice/message/unreadCount');
}

/**
 * 修改通知消息读取状态
 * @param data
 */
export function changeMessageReadStatus(data: any) {
  return requestClient.put<void>(
    '/system/notice/message/changeReadStatus',
    data,
  );
}

/**
 * 清空全部消息
 */
export function deleteAllMessage() {
  return requestClient.deleteWithMsg<void>('/system/notice/message/clearAll');
}
